using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;

// 定义PopUpTextFX类，它继承自MonoBehaviour，可以在Unity中使用  
public class PopUpTextFX : MonoBehaviour
{
    // 定义一个TextMeshPro类型的字段，用于引用场景中的TextMeshPro文本组件  
    private TextMeshPro myText;

    // 定义一个浮点型字段，用于控制文本上升的速度  
    [SerializeField] private float speed;

    // 定义一个浮点型字段，用于控制文本在消失阶段的下降速度  
    [SerializeField] private float disappearanceSpeed;  

    // 定义一个浮点型字段，用于控制文本颜色消失的速度  
    [SerializeField] private float colorDisappearanceSpeed; 

    // 定义一个浮点型字段，用于控制文本的生命周期时长  
    [SerializeField] private float lifeTime;

    // 定义一个浮点型字段，用于记录文本的生命周期计时器  
    private float textTimer;

    // Start方法在游戏对象被实例化时调用一次  
    void Start()
    {
        // 获取当前游戏对象上的TextMeshPro组件，并赋值给myText字段  
        myText = GetComponent<TextMeshPro>();

        // 初始化文本生命周期计时器为lifeTime  
        textTimer = lifeTime;
    }

    // Update方法每帧调用一次  
    void Update()
    {
        // 使用Vector2.MoveTowards方法使文本以speed的速度沿y轴正方向上升  
        // 注意：这里只改变了y轴的位置，x轴保持不变  
        transform.position = Vector2.MoveTowards(transform.position, new Vector2(transform.position.x, transform.position.y + 1), speed * Time.deltaTime);

        // 减少文本生命周期计时器  
        textTimer -= Time.deltaTime;

        // 检查文本生命周期是否结束  
        if (textTimer < 0)
        {
            // 计算文本颜色的alpha值，使其以colordisappearanceSpeed的速度减少  
            float alpha = myText.color.a - colorDisappearanceSpeed * Time.deltaTime;

            // 更新文本颜色，保持rgb值不变，只改变alpha值  
            myText.color = new Color(myText.color.r, myText.color.g, myText.color.b, alpha);

            // 当文本颜色的alpha值小于50时，改变文本下降速度  
            if (myText.color.a < 50)
                speed = disappearanceSpeed; // 

            // 当文本颜色的alpha值小于等于0时，销毁当前游戏对象  
            if (myText.color.a <= 0)
            {
                Destroy(gameObject);
            }
        }
    }
}